<?php
namespace App\Common\Cla\User\XXX;

use App\Common as com;
use App\Common\Cla\User\XXX\Save as thisSave;

class Save extends com\Cla\ClaBase\SaveV2 {

	/**
	 * 待保存的DataManager
	 * @return com\Model\XXX\DataManager
	 */
	public function goWaitSaveDataManager(  ):com\Model\XXX\DataManager {
		return $this->goPool( __METHOD__, function(){
			return com\Model\XXX::dataManager();
		} );
	}

	/**
	 * 检查唯一性是否重复
	 * @return string|bool [true]允许 [false]不允许 [string]不允许，并返回错误提示
	 */
	/*
	protected function checkCreateReStr(  ):string|bool {
		$isExist = $this->goWaitSaveDataManager()->newData_XXX()->isExist();
		if( $isExist ){
			return '已存在';
		}
		//
		return true;
	}
	*/

	/**
	 * 创建并返回数据对象
	 * @return XXX\OfId 数据对象
	 * @throws
	 */
	/*
	public function saveReOfIdObj():XXX\OfId {
		return XXX\OfId::makeOfNew( $this->saveReMainId() );
	}
	*/

	/**
	 * 事件->创建(事务内)
	 * @param int $dataId
	 * @return bool
	 * @throws
	 */
	/*
	protected function eventCreateAsTransaction( int $dataId ):bool {
		return true;
	}
	*/

	/**
	 * 事件->创建
	 * @param int $dataId
	 * @return bool
	 * @throws
	 */
	/*
	protected function eventCreate( int $dataId ):bool {
		//
		return true;
	}
	*/

	/**
	 * 事件->更新(事务内)
	 * @param int $dataId
	 * @return bool
	 * @throws
	 */
	/*
	protected function eventUpdateAsTransaction( int $dataId ):bool {
		return true;
	}
	*/

	/**
	 * 事件->更新
	 * @param int $dataId
	 * @return bool
	 * @throws
	 */
	/*
	protected function eventUpdate( int $dataId ):bool {
		//
		return true;
	}
	*/

	// ===============================
	//
	//
	// 下面为静态方法
	//
	//
	// ===============================

	/**
	 * @param string $xxx
	 * @return $this
	 */
	public static function makeOfCreate( string $xxx ):self {
		$saver = self::make();
		$saver->goWaitSaveDataManager()
			->setData_Xxx( $xxx );
		//
		return $saver;
	}

	/**
	 * @param int $id
	 * @return $this
	 */
	public static function makeOfUpdate( int $id ):self {
		$saver = self::make();
		$saver->goWaitSaveDataManager()
			->whereData_Id( $id );
		return $saver;
	}

}
